package com.itbaizhan.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * 提示词
 */
@RestController
public class PromptController {

    //引入模板文件
    @Value("classpath:/prompts/system-message.st")
    private Resource resource;


    @Autowired
    private ChatModel chatModel;

    /**
     * 提示词练习
     * @param message
     * @param name
     * @param voice
     * @return
     */
    @GetMapping("/chat")
    public String chat(String message, String name, String voice) {

        // 1、将用户输入的消息封装为一个usermessage对象
        UserMessage userMessage = new UserMessage(message);
        // 2、使用系统资源初始化
        SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(resource);
        // 3、通过模板文件和参数创建系统消息 name和 voice
        Message systemmessage = systemPromptTemplate.createMessage(Map.of("name", name, "voice", voice));
        // 4、将用户消息和系统消息封装为一个提示词对象prompt
        Prompt prompt = new Prompt(List.of(userMessage, systemmessage));
        return ChatClient.create(chatModel).prompt(prompt).call().content();


    }


}
